<?php

namespace app\admin\controller;

use app\common\controller\Backend;
use think\Db;

class Index extends Backend
{

    protected $NoLogin = ['login', 'logout'];

    //构造函数
    public function __construct()
    {
        //继承父级
        parent::__construct();

        //使用公共模型
        $this->AdminModel = model('Admin');
    }

    //后台首页
    public function index()
    {
        return $this->fetch();
    }

    //后台main页面
    public function main()
    {
        //查询数据库版本号
        $MysqlVersion = Db::query("select version() as ver;");

        //查询帖子总数
        $PostCount = Db::query("select count(*) as p from pre_post");

        $this->assign([
            'MysqlVersion' => $MysqlVersion['0']['ver'],
            'PostCount' => $PostCount[0]['p']
        ]);

        return $this->fetch();
    }

    //后台登录页面
    public function login()
    {

        //如果有session
        $LoginAdmin = session('LoginAdmin');

        if (!empty($LoginAdmin)) {
            $admin = $this->AdminModel->where('id', $LoginAdmin['id'])->find();
            // halt($admin);
            //该管理员不存在
            if (!$admin) {
                session('LoginAdmin', null);
                $this->error('非法登录', url('admin/index/login'));
                exit;
            }

            // 是否被禁用
            if ($admin['state'] != 1) {
                session('LoginAdmin', null);
                $this->error('该管理员已禁用,请重新登录', url('admin/index/login'));
            }

            $this->success('你已经成功登录了,请不要重复登录', url('admin/index/index'));
            exit;
        }

        //如果有post提交
        if ($this->request->isPost()) {
            //接收用户名
            $username = $this->request->param('username', '');

            //去数据库里面查询
            $admin = $this->AdminModel->where('username', $username)->find();

            //该管理员不存在
            if (!$admin) {
                $this->error('该管理员不存在', url('admin/index/login'));
                exit;
            }

            //密码盐
            $salt = $admin['salt'];



            //接收密码
            $pass = $this->request->param('password', '');

            //加密
            $password = md5($pass . $salt);


            if ($admin['password'] != $password) {
                $this->error('用户名或密码错误', url('admin/index/login'));
                exit;
            }

            //该管理是否禁用
            if ($admin['state'] != 1) {
                $this->error('该管理员已禁用');
                exit;
            }

            //封装session的数组
            $data = [
                'id' => $admin['id'],
                'nickname' => $admin['nickname']
            ];

            //设置session
            session('LoginAdmin', $data);

            $this->success('登录成功', url('admin/index/index'));
        }


        return $this->fetch();
    }

    //退出
    public function logout()
    {

        //清空session
        session('LoginAdmin', null);

        $this->success('退出成功', url('admin/index/login'));
    }
}
